package pers.xiaojun.boot.module.infra.dao.mapper;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import pers.xiaojun.boot.module.infra.dao.entity.FileConfigDO;

/**
 * 文件配置数据访问层
 *
 * @author xiaojun
 * @since 2025-11-13
 */
@Mapper
public interface FileConfigMapper extends BaseMapper<FileConfigDO> {

    /**
     * 更新主配置为非主配置
     *
     * @return 更新条数
     */
    default int updateMasterToFalse() {
        return update(new LambdaUpdateWrapper<FileConfigDO>()
                .eq(FileConfigDO::getMaster, true)
                .set(FileConfigDO::getMaster, false)
        );
    }

    /**
     * 根据ID更新主配置
     *
     * @param id       配置Id
     * @param isMaster 是否主配置
     * @return 更新条数
     */
    default int updateMasterById(Long id, Boolean isMaster) {
        return update(new LambdaUpdateWrapper<FileConfigDO>()
                .eq(FileConfigDO::getId, id)
                .set(FileConfigDO::getMaster, isMaster)
        );
    }

    /**
     * 根据配置名称获取文件配置
     *
     * @param name 配置名称
     * @return 文件配置
     */
    default FileConfigDO selectByName(String name) {
        return selectOne(new LambdaQueryWrapper<FileConfigDO>()
                .eq(FileConfigDO::getName, name)
        );
    }

}
